home *** CD-ROM | disk | FTP | other *** search
- function GetFileInDir(date: TDateTime; path, fileMask: string): string;
- { to find newest file: pass Now as date
- to find oldest file: pass 0 as date
- to find newest file on 19 Sep 97: pass 20 Sep 97 as date }
- var
- slstFiles: TStringList;
- dateTime, savedDateTime: TDateTime;
- index: integer;
- i: integer;
- fileDate: longInt;
- begin
- slstFiles := TStringList.Create;
- try
- (* issue #17, page 62
- procedure FindFile(initialPath : string;
- fileMask : string; { mask to look for } }
- recursive: boolean; { search subdirectories? }
- stopOnFirstMatch: boolean;
- showFile: boolean; { add file or dir to list } }
- files: TStringList); { addmatch(es) to list }
- *)
- FindFile(path, fileMask, False, False, True, slstFiles);
- if slstFiles.Count > 0 then begin
- dateTime := 0;
- savedDateTime := 0;
- if date = 0 then begin { find oldest file }
- savedDateTime := now;
- for i := 0 to slstFiles.Count - 1 do begin
- fileDate := FileAge(slstFiles.Strings[i]);
- dateTime := FileDateToDateTime(fileDate);
- if dateTime < savedDateTime then begin
- savedDateTime := dateTime;
- index := i;
- end;
- end;
- end
- else { find file nearest (<= date) }
- for i := 0 to slstFiles.Count - 1 do begin
- fileDate := FileAge(slstFiles.Strings[i]);
- dateTime := FileDateToDateTime(fileDate);
- if ((dateTime > savedDateTime) and (dateTime < date)) then begin
- savedDateTime := dateTime;
- index := i;
- end;
- end;
- Result := ExtractFileName(slstFiles.Strings[index]);
- end;
- else Result := '';
- finally
- slstFiles.Free;
- end;
- end;
-